package com.wcsy.myblog.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wcsy.myblog.entity.Article;
import com.wcsy.myblog.entity.ArticlePage;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

public interface ArticleMapper extends BaseMapper<Article> {
    List<Article> selectArticle(String name);//查出登陆用户的文章信息
    List<Article> selectList();//查出所有文章的信息 显示在主页
    List<Article> select(String name);//查询某一个用户的所有文章信息，包含文章类型 文章标签

    /**
     * @apiNote 添加文章
     * @param article
     */
    void insertArticle(@Param("article") Article article);
    void removeArticle(int id);

    Article serlectOneArticle(Integer id); //查询某一篇文章的信息

    /**
     *  @apiNote 查询总的文章在首页进行分页
     * @param start   从哪一条数据开始查起
     * @param lentht  这页查询数据的数量
     * @return
     */
    List<Article> sevletlimit(@Param("start") int start, @Param("lentht") int lentht);

    /**
     * @apiNote 查询单个用户的文章  进行分页
     * @param start 从哪一条数据开始查起
     * @param lentht 这页查询数据的数量
     * @return
     */
    List<Article> sevletUserlimit(@Param("start") int start, @Param("lentht") int lentht,@Param("userId") int userId);

    /**
     * @apiNote 查询用户的收藏文章总数
     * @param userId
     * @return
     */
    List<Article> SelectListCollect(int userId);
    boolean updateArticle(@Param("article")Article article);
    Article selectOneArticle(int articleID);

    /**
     * @apiNote 根据文章id使得点赞数+1
     * @param articleId
     * @return
     */
    boolean updateNubArticle(int articleId);

    /**
     * @apiNote 取消点赞
     * @param articleId
     * @return
     */
    boolean noUpdateNubArticle(int articleId);

    /**
     * @apiNote 添加收藏
     * @param userId 收藏人的id
     * @param articleId  待收藏的文章
     */
    void insertCollect(@Param("userId") int userId,@Param("articleId") int articleId);

    /**
     * 根据文章内容，用户id，类型id，标签id查询
     * @param article
     * @return 文章id
     */
    Article selectId(@Param("article") Article article);
    void updateUrl(@Param("Url") String Url,@Param("id") int id);

    /**
     * 根据文章id使得访问量+1
     * @param articleId
     */
    void updatePageviews(int articleId);

}
